home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Periodicals / develop / develop 5 code / Scanning from ProDOS / Dev.Sample.aii.lst < prev    next >
Encoding:
File List  |  1990-11-06  |  58.9 KB  |  1,126 lines  |  [TEXT/MPS ]

  1.  
  2. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   1
  3. Copyright Apple Computer, Inc. 1987-1990
  4.  
  5. Loc   SLoc Object Code    Addr T M    Source Statement
  6.  
  7.  
  8.                                       ;*******************************************************
  9.                                       ;
  10.                                       ;    Develop Code Samples.
  11.                                       ;
  12.                                       ;    Written by Matt Gulick.        Started October 16,1990
  13.                                       ;
  14.                                       ;*******************************************************
  15.  
  16.                                       ;*******************************************************
  17.                                       ;
  18.                                       ;    This file contains the code samples that are used in
  19.                                       ;    the Scanning From ProDOS article in DEVELOP.  These
  20.                                       ;    code segments may be used freely by anyone.  All
  21.                                       ;    code in this file assumes that we are running in an
  22.                                       ;    8 bit Apple IIe.
  23.                                       ;
  24.                                       ;*******************************************************
  25.  
  26.                                       ;*******************************************************
  27.                                       ;
  28.                                       ;    Revision History:
  29.                                       ;
  30.                                       ;*******************************************************
  31.  
  32.                                       ;    Oct  16, 1990    File started.
  33.                                       ;
  34.  
  35.                                                   STRING        PASCAL
  36.                                                   BLANKS        OFF
  37.                                                   PAGESIZE    70
  38.                                                   PRINT        NOGEN
  39.                                                   PRINT        NOMDIR
  40.                                                   MACHINE        M65C02
  41.  
  42.  
  43. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   2
  44. Copyright Apple Computer, Inc. 1987-1990
  45.  
  46. Loc   SLoc Object Code    Addr T M    Source Statement
  47.  
  48.  
  49.                                       ;*******************************************************
  50.                                       ;
  51.                                       ;    CODE SAMPLE #1
  52.                                       ;
  53.                                       ;    This first code segment walks the slots starting at
  54.                                       ;    slot 7, looking first for a card of any kind.  Once
  55.                                       ;    found, we check the ID bytes for a Smartport card.
  56.                                       ;    Once found we check the ID Type byte to see if it is
  57.                                       ;    a SCSI Card.  If it passes all these tests, we then
  58.                                       ;    issue a Device $00 Status $00 call to further ensure
  59.                                       ;    that this is the Apple High-Speed SCSI Card.
  60.                                       ;
  61.                                       ;*******************************************************
  62.  
  63.                                                                       ;
  64.                                                                       ; The following are Equates
  65.                                                                       ; that will bee used in all
  66.                                                                       ; the Sample Code Segments
  67.                                                                       ; that follow.
  68.                                                                       ;
  69.            0000 00C7                  slot_7        equ        $C7
  70.            0000 00C1                  slot_1        equ        $C1
  71.  
  72.            0000 0042                  My_ZPage    equ        $42
  73.  
  74.            0000 C000                  KBD            equ        $C000        ;Keyboard
  75.            0000 C00C                  CLR80VID    equ        $C00C        ;Disable 80-column hardware
  76.            0000 C00D                  SET80VID    equ        $C00D        ;Enable 80-column hardware
  77.            0000 C010                  KBD_STRB    equ        $C010        ;Keyboard Strobe
  78.            0000 C018                  RD80COL        equ        $C018        ;Read 80 Col. Mode
  79.            0000 C01A                  RDTEXT        equ        $C01A        ;Read Text Mode
  80.            0000 C01B                  RDMIX        equ        $C01B        ;Read Mix Mode
  81.            0000 C01C                  RDPAGE2        equ        $C01C        ;Read Page 2 setting
  82.            0000 C01D                  RDHIRES        equ        $C01D        ;Read HiRes setting
  83.            0000 C050                  TXTCLR        equ        $C050        ;Clear Text Mode
  84.            0000 C051                  TXTSET        equ        $C051        ;Set Text Mode
  85.            0000 C052                  MIXCLR        equ        $C052        ;Clear Mixed Mode
  86.            0000 C053                  MIXSET        equ        $C053        ;Set Mixed Mode
  87.            0000 C054                  TXTPAGE1    equ        $C054        ;Set Text Page 1
  88.            0000 C055                  TXTPAGE2    equ        $C055        ;Set Text page 2
  89.            0000 C056                  LORES        equ        $C056        ;Set LoRes Graphics
  90.            0000 C057                  HIRES        equ        $C057        ;Set HiRes Graphics
  91.            0000 C05E                  CLRAN3        equ        $C05E        ;Clear annunciator 3
  92.            0000 C05F                  SETAN3        equ        $C05F        ;Set annunciator 3
  93.  
  94.            0000 009B                  ESC            equ        $9B            ;High bit set ASCII ESC Key
  95.  
  96.            0000 0001                  Blk_sig1    equ        $01
  97.            0000 0003                  Blk_sig2    equ        $03
  98.            0000 0005                  Blk_sig3    equ        $05
  99.            0000 0007                  SPort_sig    equ        $07
  100.            0000 00FB                  SPort_ID    equ        $FB
  101.  
  102.            0000 0080                  Ext_SPort    equ        %10000000    ;Bit 7
  103.            0000 0002                  SCSI        equ        %00000010    ;Bit 2
  104.  
  105.            0000 0000                  No_Err        equ        $00
  106.            0000 0027                  IO_Err        equ        $27
  107.            0000 0028                  No_dev        equ        $28
  108.  
  109.                                       ;*******************************************************
  110.  
  111.                                                   EXPORT    P8_Scanner
  112. 00000 0000                            P8_Scanner    PROC
  113. 00000 0000                                                            ;
  114. 00000 0000                                                            ; Main Code Segment.
  115. 00000 0000                                                            ;
  116. 00000 0000
  117.  
  118. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   3
  119. Copyright Apple Computer, Inc. 1987-1990
  120.  
  121. Loc   SLoc Object Code    Addr T M    Source Statement
  122.  
  123. 00000 0000 20 FFFF       00018 6                  jsr        find_card
  124. 00003 0003 20 FFFF       000FA 6                  jsr        find_scanr
  125. 00006 0006 20 FFFF       0018E 6                  jsr        htone_filter
  126. 00009 0009 20 FFFF       001F5 6                  jsr        def_window
  127. 0000C 000C 20 FFFF       0027B 6                  jsr        start_scan
  128. 0000F 000F 20 FFFF       002CE 6                  jsr        get_data
  129. 00012 0012 20 FFFF       005C3 6                  jsr        display
  130. 00015 0015 90 E9         00000 2                  bcc        P8_Scanner
  131. 00017 0017 60                  6                  rts
  132. 00018 0018
  133. 00018 0018                            ;*******************************************************
  134. 00018 0018                            ;
  135. 00018 0018                            ;    CODE SAMPLE #1
  136. 00018 0018                            ;
  137. 00018 0018                            ;    This first code segment walks the slots starting at
  138. 00018 0018                            ;    slot 7, looking first for a card of any kind.  Once
  139. 00018 0018                            ;    found, we check the ID bytes for a Smartport card.
  140. 00018 0018                            ;    Once found we check the ID Type byte to see if it is
  141. 00018 0018                            ;    a SCSI Card.  If it passes all these tests, we then
  142. 00018 0018                            ;    issue a Device $00 Status $00 call to further ensure
  143. 00018 0018                            ;    that this is the Apple High-Speed SCSI Card.
  144. 00018 0018                            ;
  145. 00018 0018                            ;*******************************************************
  146. 00018 0018
  147. 00018 0018                            find_card
  148. 00018 0018                                                            ;
  149. 00018 0018                                                            ; Save the current Zero
  150. 00018 0018                                                            ; Page values before
  151. 00018 0018                                                            ; using them.
  152. 00018 0018                                                            ;
  153. 00018 0018 A5 42               3                  lda        <My_ZPage
  154. 0001A 001A 48                  3                  pha
  155. 0001B 001B A5 43               3                  lda        <My_ZPage+1
  156. 0001D 001D 48                  3                  pha
  157. 0001E 001E                                                            ;
  158. 0001E 001E                                                            ; Start at Slot 7.
  159. 0001E 001E                                                            ;
  160. 0001E 001E A9 C7               2                  lda        #slot_7
  161. 00020 0020 85 43               3                  sta        <My_ZPage+1    ;Zero Page
  162. 00022 0022 8D FFFF       000AF 4                  sta        slot+1        ;For Safe keeping
  163. 00025 0025 64 42               3                  stz        <My_ZPage
  164. 00027 0027 9C FFFF       000AE 4                  stz        slot
  165. 0002A 002A                                                            ;
  166. 0002A 002A                                                            ; Is it a Smartport Card?
  167. 0002A 002A                                                            ;
  168. 0002A 002A A0 01               2      @chk_smart    ldy        #Blk_sig1
  169. 0002C 002C B1 42               5                  lda        (My_ZPage),y;Block_device Signature Byte
  170. 0002E 002E C9 20               2                  cmp        #$20        ;#1 = $20
  171. 00030 0030 D0 23         00055 2                  bne        @next_slot
  172. 00032 0032
  173. 00032 0032 A0 03               2                  ldy        #Blk_sig2
  174. 00034 0034 B1 42               5                  lda        (My_ZPage),y;Block_device Signature Byte
  175. 00036 0036 D0 1D         00055 2                  bne        @next_slot    ;#2 = $00
  176. 00038 0038
  177. 00038 0038 A0 05               2                  ldy        #Blk_sig3
  178. 0003A 003A B1 42               5                  lda        (My_ZPage),y;Block_device Signature Byte
  179. 0003C 003C C9 03               2                  cmp        #$03        ;#3 = $03
  180. 0003E 003E D0 15         00055 2                  bne        @next_slot
  181. 00040 0040
  182. 00040 0040 A0 07               2                  ldy        #SPort_sig
  183. 00042 0042 B1 42               5                  lda        (My_ZPage),y;SmartPort Signature Byte
  184. 00044 0044 D0 0F         00055 2                  bne        @next_slot    ;#1 = $00
  185. 00046 0046                                                            ;
  186. 00046 0046                                                            ; We have a Smartport
  187. 00046 0046                                                            ; Device.  Is it SCSI with
  188. 00046 0046                                                            ; Extended SmartPort?
  189. 00046 0046                                                            ;
  190. 00046 0046 A0 FB               2                  ldy        #SPort_ID
  191. 00048 0048 B1 42               5                  lda        (My_ZPage),y
  192.  
  193. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   4
  194. Copyright Apple Computer, Inc. 1987-1990
  195.  
  196. Loc   SLoc Object Code    Addr T M    Source Statement
  197.  
  198. 0004A 004A 29 82               2                  and        #Ext_SPort+\
  199.                                                           SCSI
  200. 0004C 004C C9 82               2                  cmp        #Ext_SPort+\
  201.                                                           SCSI
  202. 0004E 004E D0 05         00055 2                  bne        @next_slot
  203. 00050 0050                                                            ;
  204. 00050 0050                                                            ; Is it an Apple High-
  205. 00050 0050                                                            ; Speed SCSI Card?
  206. 00050 0050                                                            ;
  207. 00050 0050 20 FFFF       0006E 6                  jsr        is_it_appl
  208. 00053 0053 90 0E         00063 2                  bcc        @exit
  209. 00055 0055                                                            ;
  210. 00055 0055                                                            ; Check the Next Slot.
  211. 00055 0055                                                            ;
  212. 00055 0055 A5 43               3      @next_slot    lda        <My_ZPage+1
  213. 00057 0057 3A                  2                  dec        a
  214. 00058 0058 85 43               3                  sta        <My_ZPage+1
  215. 0005A 005A 8D FFFF       000AF 4                  sta        slot+1
  216. 0005D 005D C9 C1               2                  cmp        #slot_1
  217. 0005F 005F B0 C9         0002A 2                  bge        @chk_smart
  218. 00061 0061 A9 28               2                  lda        #No_dev        ;No Device Error
  219. 00063 0063                                                            ;
  220. 00063 0063                                                            ; Clean Exit
  221. 00063 0063                                                            ;
  222. 00063 0063 AA                  2      @exit        tax
  223. 00064 0064 68                  4                  pla
  224. 00065 0065 85 43               3                  sta        <My_ZPage+1
  225. 00067 0067 68                  4                  pla
  226. 00068 0068 85 42               3                  sta        <My_ZPage
  227. 0006A 006A 8A                  2                  txa
  228. 0006B 006B
  229. 0006B 006B C9 01               2                  cmp        #$01        ;Set Carry if Non-Zero
  230. 0006D 006D 60                  6                  rts
  231. 0006E 006E                                                            ;
  232. 0006E 006E                                                            ; This routine determines
  233. 0006E 006E                                                            ; if the card is the new
  234. 0006E 006E                                                            ; High-Speed SCSI Card.
  235. 0006E 006E                                                            ;
  236. 0006E 006E A0 FF               2      is_it_appl    ldy        #$ff
  237. 00070 0070 B1 42               5                  lda        (My_ZPage),y
  238. 00072 0072 18                  2                  clc
  239. 00073 0073 69 03               2                  adc        #$03        ;Set Smartport Entry Address
  240. 00075 0075 8D FFFF       000B3 4                  sta        card_ntry
  241. 00078 0078
  242. 00078 0078 A5 43               3                  lda        <My_ZPage+1
  243. 0007A 007A 8D FFFF       000B4 4                  sta        card_ntry+1
  244. 0007D 007D
  245. 0007D 007D 20 FFFF       000B0 6                  jsr        call_card
  246. 00080 0080 00                                     dc.b    $00            ;Status Call Command Number
  247. 00081 0081 00B5                                   dc.w    stat_list1
  248. 00083 0083                                                            ;
  249. 00083 0083                                                            ; Check the Results
  250. 00083 0083                                                            ;
  251. 00083 0083 AD FFFF       000BC 4                  lda        stat_data+2    ;Low Byte of Vendor ID
  252. 00086 0086 C9 01               2                  cmp        #$01        ;Must be $01
  253. 00088 0088 D0 12         0009C 2                  bne        @non_apple
  254. 0008A 008A
  255. 0008A 008A AD FFFF       000BD 4                  lda        stat_data+3    ;High Byte of Vendor ID
  256. 0008D 008D D0 0D         0009C 2                  bne        @non_apple    ;Must be $00
  257. 0008F 008F
  258. 0008F 008F AD FFFF       000BE 4                  lda        stat_data+4    ;Low Byte of Version
  259. 00092 0092 D0 08         0009C 2                  bne        @non_apple    ;Should be Null
  260. 00094 0094
  261. 00094 0094 AD FFFF       000BF 4                  lda        stat_data+5    ;High Byte of Version
  262. 00097 0097 D0 03         0009C 2                  bne        @non_apple    ;Should be Null
  263. 00099 0099
  264. 00099 0099 18                  2                  clc                    ;Acc. 0 by previous LDA
  265. 0009A 009A 80 03         0009F 3                  bra        @done
  266. 0009C 009C
  267.  
  268. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   5
  269. Copyright Apple Computer, Inc. 1987-1990
  270.  
  271. Loc   SLoc Object Code    Addr T M    Source Statement
  272.  
  273. 0009C 009C A9 28               2      @non_apple    lda        #No_dev        ;Device not found.
  274. 0009E 009E 38                  2                  sec
  275. 0009F 009F                                                            ;
  276. 0009F 009F                                                            ; Restore ZPage
  277. 0009F 009F                                                            ;
  278. 0009F 009F 48                  3      @done        pha
  279. 000A0 00A0 08                  3                  php
  280. 000A1 00A1 AD FFFF       000AE 4                  lda        slot
  281. 000A4 00A4 85 42               3                  sta        <My_ZPage
  282. 000A6 00A6 AD FFFF       000AF 4                  lda        slot+1
  283. 000A9 00A9 85 43               3                  sta        <My_ZPage+1
  284. 000AB 00AB 28                  4                  plp
  285. 000AC 00AC 68                  4                  pla
  286. 000AD 00AD 60                  6                  rts
  287. 000AE 00AE
  288. 000AE 00AE 0000                       slot        dc.w    $0000
  289. 000B0 00B0
  290. 000B0 00B0                            ;*******************************************************
  291. 000B0 00B0
  292. 000B0 00B0 6C FFFF             5      call_card    jmp        (card_ntry)
  293. 000B3 00B3
  294. 000B3 00B3 0000                       card_ntry    dc.w    $0000
  295. 000B5 00B5
  296. 000B5 00B5                            ;*******************************************************
  297. 000B5 00B5
  298. 000B5 00B5 03                         stat_list1    dc.b    $03            ;PCount = 3
  299. 000B6 00B6 00                                     dc.b    $00            ;Device = Card
  300. 000B7 00B7 00BA                                   dc.w    stat_data    ;Data returned here
  301. 000B9 00B9 00                                     dc.b    $00            ;Get Host Status Call
  302. 000BA 00BA
  303. 000BA 00BA                            ;*******************************************************
  304. 000BA 00BA
  305. 000BA 00BA 000000000000               stat_data    dcb.b    64,0        ;Our Buffer.
  306. 000FA 00FA
  307. 000FA 00FA                            ;*******************************************************
  308. 000FA 00FA                            ;
  309. 000FA 00FA                            ;    CODE SAMPLE #2
  310. 000FA 00FA                            ;
  311. 000FA 00FA                            ;    This code segment walks the unit numbers from the
  312. 000FA 00FA                            ;    SCSI Card starting at unit 2 and going to unit 0 to
  313. 000FA 00FA                            ;    get the actual unit number count.  Once this is
  314. 000FA 00FA                            ;    done, we start at unit 1 and walk forward until we
  315. 000FA 00FA                            ;    find the scanner.
  316. 000FA 00FA                            ;
  317. 000FA 00FA                            ;*******************************************************
  318. 000FA 00FA
  319. 000FA 00FA                            find_scanr
  320. 000FA 00FA                                                            ;
  321. 000FA 00FA                                                            ; First we issue a
  322. 000FA 00FA                                                            ; Status call to device
  323. 000FA 00FA                                                            ; number 2.  This will
  324. 000FA 00FA                                                            ; force the card to
  325. 000FA 00FA                                                            ; build its tables if it
  326. 000FA 00FA                                                            ; has not yet done so.
  327. 000FA 00FA                                                            ;
  328. 000FA 00FA A9 02               2                  lda        #$02
  329. 000FC 00FC 8D FFFF       00171 4                  sta        dev_num2
  330. 000FF 00FF 9C FFFF       00174 4                  stz        stat_code2
  331. 00102 0102
  332. 00102 0102 20 00B0       000B0 6                  jsr        call_card
  333. 00105 0105 00                                     dc.b    $00
  334. 00106 0106 0170                                   dc.w    stat_list2
  335. 00108 0108 B0 4F         00159 2                  bcs        @error
  336. 0010A 010A                                                            ;
  337. 0010A 010A                                                            ; Now call Unit 0 to
  338. 0010A 010A                                                            ; find out the total
  339. 0010A 010A                                                            ; device count.
  340. 0010A 010A                                                            ;
  341. 0010A 010A 9C FFFF       00171 4                  stz        dev_num2
  342.  
  343. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   6
  344. Copyright Apple Computer, Inc. 1987-1990
  345.  
  346. Loc   SLoc Object Code    Addr T M    Source Statement
  347.  
  348. 0010D 010D 20 00B0       000B0 6                  jsr        call_card
  349. 00110 0110 00                                     dc.b    $00            ;Status Call Command Number
  350. 00111 0111 0170                                   dc.w    stat_list2
  351. 00113 0113 B0 44         00159 2                  bcs        @error
  352. 00115 0115
  353. 00115 0115 AD FFFF       00175 4                  lda        stat_data2    ;Get the Total Device
  354. 00118 0118 8D FFFF       0016E 4                  sta        dev_count    ;Count
  355. 0011B 011B
  356. 0011B 011B A9 03               2                  lda        #$03        ;Set up for DIB Status
  357. 0011D 011D 8D FFFF       00174 4                  sta        stat_code2    ;Calls
  358. 00120 0120
  359. 00120 0120 AD FFFF       00171 4      @loop        lda        dev_num2    ;First time we increment
  360. 00123 0123 CD FFFF       0016E 4                  cmp        dev_count    ;a zero giving a device
  361. 00126 0126 B0 31         00159 2                  bge        @error        ;number of 1.
  362. 00128 0128
  363. 00128 0128 EE FFFF       00171 6                  inc        dev_num2
  364. 0012B 012B 20 00B0       000B0 6                  jsr        call_card
  365. 0012E 012E 00                                     dc.b    $00            ;Status Call Command Number
  366. 0012F 012F 0170                                   dc.w    stat_list2
  367. 00131 0131 B0 26         00159 2                  bcs        @error
  368. 00133 0133
  369. 00133 0133 AD FFFF       0018A 4                  lda        d_type
  370. 00136 0136 C9 08               2                  cmp        #$08        ;Is it Type = Scanner?
  371. 00138 0138 D0 E6         00120 2                  bne        @loop        ;No.
  372. 0013A 013A
  373. 0013A 013A AD FFFF       0018B 4                  lda        d_stype
  374. 0013D 013D C9 A0               2                  cmp        #$A0        ;Subtype = $A0?
  375. 0013F 013F D0 DF         00120 2                  bne        @loop        ;No
  376. 00141 0141                                                            ;
  377. 00141 0141                                                            ; Scan string is a Pascal
  378. 00141 0141                                                            ; String.  A length byte
  379. 00141 0141                                                            ; followed by ASCII.  We
  380. 00141 0141                                                            ; want to make sure they
  381. 00141 0141                                                            ; are both the same length
  382. 00141 0141                                                            ; as well as the same text.
  383. 00141 0141                                                            ;
  384. 00141 0141 AE FFFF       00179 4                  ldx        id_str_len
  385. 00144 0144 BD FFFF             4      @str_loop    lda        id_str_len,x
  386. 00147 0147 DD FFFF             4                  cmp        scan_str,x
  387. 0014A 014A D0 D4         00120 2                  bne        @loop
  388. 0014C 014C CA                  2                  dex
  389. 0014D 014D D0 F5         00144 2                  bne        @str_loop
  390. 0014F 014F
  391. 0014F 014F AD FFFF       00171 4                  lda        dev_num2    ;We have our Scanner
  392. 00152 0152 8D FFFF       0016F 4                  sta        scan_dnum
  393. 00155 0155 A9 00               2                  lda        #No_Err
  394. 00157 0157 18                  2                  clc
  395. 00158 0158 60                  6                  rts
  396. 00159 0159
  397. 00159 0159 A9 28               2      @error        lda        #No_dev        ;Device not found.
  398. 0015B 015B 38                  2                  sec
  399. 0015C 015C 60                  6                  rts
  400. 0015D 015D
  401. 0015D 015D                            ;*******************************************************
  402. 0015D 015D
  403. 0015D 015D 104150504C45               scan_str    dc.b    'APPLE   SCANNER '    ;4 Spaces between
  404. 0016E 016E                                                                    ;1 Sace after
  405. 0016E 016E 00                         dev_count    dc.b    $00
  406. 0016F 016F
  407. 0016F 016F                            ;*******************************************************
  408. 0016F 016F
  409. 0016F 016F 00                         scan_dnum    dc.b    $00            ;Scanner Device Number
  410. 00170 0170
  411. 00170 0170                            ;*******************************************************
  412. 00170 0170
  413. 00170 0170 03                         stat_list2    dc.b    $03            ;PCount = 3
  414. 00171 0171 00                         dev_num2    dc.b    $00            ;Device number
  415. 00172 0172 0175                                   dc.w    stat_data2    ;Data returned here
  416. 00174 0174 00                         stat_code2    dc.b    $00            ;Status Code
  417.  
  418. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   7
  419. Copyright Apple Computer, Inc. 1987-1990
  420.  
  421. Loc   SLoc Object Code    Addr T M    Source Statement
  422.  
  423. 00175 0175
  424. 00175 0175                            ;*******************************************************
  425. 00175 0175
  426. 00175 0175                            stat_data2                        ;Our Buffer. Used over.
  427. 00175 0175 00                         d_stat        dc.b    $00            ;Device Status Byte
  428. 00176 0176 00                         blk_low        dc.b    $00            ;Block Count (Low)
  429. 00177 0177 00                         blk_mid        dc.b    $00            ;Block Count (Mid)
  430. 00178 0178 00                         blk_hi        dc.b    $00            ;Block Count (High)
  431. 00179 0179 00                         id_str_len    dc.b    $00            ;ID String Length
  432. 0017A 017A 000000000000               id_str        dcb.b    16,$00        ;ID STring (16 Bytes)
  433. 0018A 018A 00                         d_type        dc.b    $00            ;Device Type
  434. 0018B 018B 00                         d_stype        dc.b    $00            ;Device Subtype
  435. 0018C 018C 0000                       d_version    dc.w    $00            ;Version Word
  436. 0018E 018E
  437. 0018E 018E                            ;*******************************************************
  438. 0018E 018E                            ;
  439. 0018E 018E                            ;    CODE SAMPLE #3
  440. 0018E 018E                            ;
  441. 0018E 018E                            ;    This code segment issues an Apple Scanner SEND
  442. 0018E 018E                            ;    Command by using the Apple SCSI Card Generic SCSI
  443. 0018E 018E                            ;    call ($2B).  By so doing we can send our halftone
  444. 0018E 018E                            ;    filter to the Scanner.
  445. 0018E 018E                            ;
  446. 0018E 018E                            ;*******************************************************
  447. 0018E 018E
  448. 0018E 018E                            htone_filter
  449. 0018E 018E                                                            ;
  450. 0018E 018E                                                            ; Issue the Call
  451. 0018E 018E                                                            ;
  452. 0018E 018E AD 016F       0016F 4                  lda        scan_dnum
  453. 00191 0191 8D FFFF       0019C 4                  sta        dev_num3
  454. 00194 0194
  455. 00194 0194 20 00B0       000B0 6                  jsr        call_card
  456. 00197 0197 04                                     dc.b    $04            ;Control Call Command Number
  457. 00198 0198 019B                                   dc.w    cmd_list3
  458. 0019A 019A 60                  6                  rts
  459. 0019B 019B
  460. 0019B 019B                            ;*******************************************************
  461. 0019B 019B
  462. 0019B 019B 03                         cmd_list3    dc.b    $03            ;PCount = 3
  463. 0019C 019C 04                         dev_num3    dc.b    $04            ;Device number
  464. 0019D 019D 01A0                                   dc.w    filter_data    ;Pointer to data
  465. 0019F 019F 2B                                     dc.b    $2B            ;Control Code
  466. 001A0 01A0
  467. 001A0 01A0                            ;*******************************************************
  468. 001A0 01A0
  469. 001A0 01A0                            filter_data                        ;Our Data
  470. 001A0 01A0 0018                                   dc.w    24            ;Total Length of Parms
  471. 001A2 01A2 000001BA                               dc.l    send_fltr    ;CDB Pointer (Long)
  472. 001A6 01A6 000001C4                               dc.l    DCData3        ;DCMove Ptr (Long)
  473. 001AA 01AA 00000000                               dc.l    $00000000    ;Rqst Sense Ptr (Long)
  474. 001AE 01AE 00                                     dc.b    $00            ;Reserved
  475. 001AF 01AF 00                                     dc.b    $00            ;SCSI Status
  476. 001B0 01B0 00                                     dc.b    $00            ;Command Count
  477. 001B1 01B1 00000011                               dc.l    $00000011    ;Trans Count (Long)
  478. 001B5 01B5 00                                     dc.b    $00            ;DMA Mode
  479. 001B6 01B6 00000000                               dc.l    $00000000    ;Reserved (Long)
  480. 001BA 01BA
  481. 001BA 01BA                            ;*******************************************************
  482. 001BA 01BA
  483. 001BA 01BA 2A                         send_fltr    dc.b    $2A            ;Scanner SEND Command
  484. 001BB 01BB 00                                     dc.b    $00            ;Reserved
  485. 001BC 01BC 02                                     dc.b    $02            ;Transfer Type
  486. 001BD 01BD 00                                     dc.b    $00            ;Reserved
  487. 001BE 01BE 00                                     dc.b    $00            ;Reserved
  488. 001BF 01BF 02                                     dc.b    $02            ;Transfer ID Byte
  489. 001C0 01C0 00                                     dc.b    $00            ;Reserved
  490. 001C1 01C1 00                                     dc.b    $00            ;Transfer Length (High)
  491. 001C2 01C2 11                                     dc.b    $11            ;Transfer Length (Low)
  492.  
  493. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   8
  494. Copyright Apple Computer, Inc. 1987-1990
  495.  
  496. Loc   SLoc Object Code    Addr T M    Source Statement
  497.  
  498. 001C3 01C3 00                                     dc.b    $00            ;Reserved
  499. 001C4 01C4
  500. 001C4 01C4                            ;*******************************************************
  501. 001C4 01C4
  502. 001C4 01C4 000001E4                   DCData3        dc.l    send_data    ;Scanner SEND Data Ptr
  503. 001C8 01C8 00000011                               dc.l    $00000011    ;Transfer Count
  504. 001CC 01CC 00000000                               dc.l    $00000000    ;Offset
  505. 001D0 01D0 00000000                               dc.l    $00000000    ;Reserved
  506. 001D4 01D4
  507. 001D4 01D4 00000000                               dc.l    $00000000    ;DCStop
  508. 001D8 01D8 00000000                               dc.l    $00000000    ;Reserved
  509. 001DC 01DC 00000000                               dc.l    $00000000    ;Reserved
  510. 001E0 01E0 00000000                               dc.l    $00000000    ;Reserved
  511. 001E4 01E4
  512. 001E4 01E4                            ;*******************************************************
  513. 001E4 01E4
  514. 001E4 01E4 44                         send_data    dc.b    $44            ;4 X 4 Matrix Size
  515. 001E5 01E5 08                                     dc.b    $08            ;Pel 0
  516. 001E6 01E6 88                                     dc.b    $88            ;Pel 1
  517. 001E7 01E7 28                                     dc.b    $28            ;Pel 2
  518. 001E8 01E8 A8                                     dc.b    $A8            ;Pel 3
  519. 001E9 01E9 C8                                     dc.b    $C8            ;Pel 4
  520. 001EA 01EA 48                                     dc.b    $48            ;Pel 5
  521. 001EB 01EB E8                                     dc.b    $E8            ;Pel 6
  522. 001EC 01EC 68                                     dc.b    $68            ;Pel 7
  523. 001ED 01ED 38                                     dc.b    $38            ;Pel 8
  524. 001EE 01EE B8                                     dc.b    $B8            ;Pel 9
  525. 001EF 01EF 18                                     dc.b    $18            ;Pel 10
  526. 001F0 01F0 98                                     dc.b    $98            ;Pel 11
  527. 001F1 01F1 F8                                     dc.b    $F8            ;Pel 12
  528. 001F2 01F2 78                                     dc.b    $78            ;Pel 13
  529. 001F3 01F3 D8                                     dc.b    $D8            ;Pel 14
  530. 001F4 01F4 58                                     dc.b    $58            ;Pel 15
  531. 001F5 01F5
  532. 001F5 01F5                            ;*******************************************************
  533. 001F5 01F5                            ;
  534. 001F5 01F5                            ;    CODE SAMPLE #4
  535. 001F5 01F5                            ;
  536. 001F5 01F5                            ;    This code segment issues an Apple Scanner Define
  537. 001F5 01F5                            ;    Window Parameters Command by using the Apple SCSI
  538. 001F5 01F5                            ;    Card Generic SCSI call ($2B).  This command defines
  539. 001F5 01F5                            ;    the area of the scanner glass we want to scan
  540. 001F5 01F5                            ;
  541. 001F5 01F5                            ;*******************************************************
  542. 001F5 01F5
  543. 001F5 01F5                            def_window
  544. 001F5 01F5                                                            ;
  545. 001F5 01F5                                                            ; Issue the Call
  546. 001F5 01F5                                                            ;
  547. 001F5 01F5 AD 016F       0016F 4                  lda        scan_dnum
  548. 001F8 01F8 8D FFFF       00203 4                  sta        dev_num4
  549. 001FB 01FB
  550. 001FB 01FB 20 00B0       000B0 6                  jsr        call_card
  551. 001FE 01FE 04                                     dc.b    $04            ;Control Call Command Number
  552. 001FF 01FF 0202                                   dc.w    cmd_list4
  553. 00201 0201 60                  6                  rts
  554. 00202 0202
  555. 00202 0202                            ;*******************************************************
  556. 00202 0202
  557. 00202 0202 03                         cmd_list4    dc.b    $03            ;PCount = 3
  558. 00203 0203 00                         dev_num4    dc.b    $00            ;Device number
  559. 00204 0204 0207                                   dc.w    def_wndo    ;Pointer to data
  560. 00206 0206 2B                                     dc.b    $2B            ;Control Code
  561. 00207 0207
  562. 00207 0207                            ;*******************************************************
  563. 00207 0207
  564. 00207 0207                            def_wndo                        ;Our Data
  565. 00207 0207 0018                                   dc.w    24            ;Total Length of Parms
  566. 00209 0209 00000221                               dc.l    def_wnd_cmd    ;CDB Pointer (Long)
  567.  
  568. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page   9
  569. Copyright Apple Computer, Inc. 1987-1990
  570.  
  571. Loc   SLoc Object Code    Addr T M    Source Statement
  572.  
  573. 0020D 020D 0000022B                               dc.l    DCData4        ;DCMove Ptr (Long)
  574. 00211 0211 00000000                               dc.l    $00000000    ;Rqst Sense Ptr (Long)
  575. 00215 0215 00                                     dc.b    $00            ;Reserved
  576. 00216 0216 00                                     dc.b    $00            ;SCSI Status
  577. 00217 0217 00                                     dc.b    $00            ;Command Count
  578. 00218 0218 00000030                               dc.l    8+40        ;Trans Count (Long)
  579. 0021C 021C 00                                     dc.b    $00            ;DMA Mode
  580. 0021D 021D 00000000                               dc.l    $00000000    ;Reserved (Long)
  581. 00221 0221
  582. 00221 0221                            ;*******************************************************
  583. 00221 0221
  584. 00221 0221 24                         def_wnd_cmd    dc.b    $24            ;Scanner Define Window
  585. 00222 0222                                                            ;Parameters Command
  586. 00222 0222 00                                     dc.b    $00            ;Reserved
  587. 00223 0223 00                                     dc.b    $00            ;Reserved
  588. 00224 0224 00                                     dc.b    $00            ;Reserved
  589. 00225 0225 00                                     dc.b    $00            ;Reserved
  590. 00226 0226 00                                     dc.b    $00            ;Reserved
  591. 00227 0227 00                                     dc.b    $00            ;Transfer Length (High)
  592. 00228 0228 00                                     dc.b    $00            ;Transfer Length (Mid)
  593. 00229 0229 30                                     dc.b    8+40        ;Transfer Length (Low)
  594. 0022A 022A 80                                     dc.b    $80            ;Apple Bit
  595. 0022B 022B
  596. 0022B 022B                            ;*******************************************************
  597. 0022B 022B
  598. 0022B 022B 0000024B                   DCData4        dc.l    wndo_data    ;Scanner Window Data Ptr
  599. 0022F 022F 00000030                               dc.l    8+40        ;Transfer Count
  600. 00233 0233 00000000                               dc.l    $00000000    ;Offset
  601. 00237 0237 00000000                               dc.l    $00000000    ;Reserved
  602. 0023B 023B
  603. 0023B 023B 00000000                               dc.l    $00000000    ;DCStop
  604. 0023F 023F 00000000                               dc.l    $00000000    ;Reserved
  605. 00243 0243 00000000                               dc.l    $00000000    ;Reserved
  606. 00247 0247 00000000                               dc.l    $00000000    ;Reserved
  607. 0024B 024B
  608. 0024B 024B                            ;*******************************************************
  609. 0024B 024B                            ;    NOTE:  Remember that all values that are longer than
  610. 0024B 024B                            ;    1 byte are in reversed order from natice 65xxx code.
  611. 0024B 024B                            ;*******************************************************
  612. 0024B 024B
  613. 0024B 024B 000000000000               wndo_data    dcb.b    6,$00        ;Reserved
  614. 00251 0251 00                                     dc.b    $00            ;Transfer Length (High)
  615. 00252 0252 28                                     dc.b    40            ;Transfer Length (Low)
  616. 00253 0253
  617. 00253 0253 01                                     dc.b    $01            ;Window Identifier
  618. 00254 0254 00                                     dc.b    $00            ;Reserved
  619. 00255 0255
  620. 00255 0255 00                                     dc.b    $00            ;X Resolution (High)
  621. 00256 0256 4B                                     dc.b    75            ;X Resolution (Low)
  622. 00257 0257
  623. 00257 0257 00                                     dc.b    $00            ;Y Resolution (High)
  624. 00258 0258 4B                                     dc.b    75            ;Y Resolution (Low)
  625. 00259 0259                                                            ;
  626. 00259 0259                                                            ; We will use the corner as
  627. 00259 0259                                                            ; Our Upper Left Possition.
  628. 00259 0259                                                            ; This is at coordinate 0,0
  629. 00259 0259                                                            ;
  630. 00259 0259 00                                     dc.b    $00            ;Upper Left X (High)
  631. 0025A 025A 00                                     dc.b    $00            ;Upper Left X (Mid High)
  632. 0025B 025B 00                                     dc.b    $00            ;Upper Left X (Mid Low)
  633. 0025C 025C 00                                     dc.b    $00            ;Upper Left X (Low)
  634. 0025D 025D
  635. 0025D 025D 00                                     dc.b    $00            ;Upper Left Y (High)
  636. 0025E 025E 00                                     dc.b    $00            ;Upper Left Y (Mid High)
  637. 0025F 025F 00                                     dc.b    $00            ;Upper Left Y (Mid Low)
  638. 00260 0260 00                                     dc.b    $00            ;Upper Left Y (Low)
  639. 00261 0261                                                            ;
  640. 00261 0261                                                            ; Width is defined as the number
  641. 00261 0261                                                            ; of 1/1200-inch increments on
  642.  
  643. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  10
  644. Copyright Apple Computer, Inc. 1987-1990
  645.  
  646. Loc   SLoc Object Code    Addr T M    Source Statement
  647.  
  648. 00261 0261                                                            ; the horizontal axis; must be on
  649. 00261 0261                                                            ; a byte boundry for both the
  650. 00261 0261                                                            ; start and end points.  We will
  651. 00261 0261                                                            ; set for 4 Inches and drop the
  652. 00261 0261                                                            ; extra.
  653. 00261 0261                                                            ;
  654. 00261 0261 00                                     dc.b    $00            ;Width (High)
  655. 00262 0262 00                                     dc.b    $00            ;Width (Mid High)
  656. 00263 0263 12                                     dc.b    4*1200/256    ;Width (Mid Low)
  657. 00264 0264 C0                                     dc.b    4*1200        ;Width (Low)
  658. 00265 0265                                                            ;
  659. 00265 0265                                                            ; Length is defined as the number
  660. 00265 0265                                                            ; of 1/1200-inch increments on the
  661. 00265 0265                                                            ; vertical axis.  We want â‰ˆ 2 1/2
  662. 00265 0265                                                            ; inches or 3072 increments
  663. 00265 0265                                                            ;
  664. 00265 0265 00                                     dc.b    $00            ;Length (High)
  665. 00266 0266 00                                     dc.b    $00            ;Length (Mid High)
  666. 00267 0267 0C                                     dc.b    3072/256    ;Length (Mid Low)
  667. 00268 0268 00                                     dc.b    3072        ;Length (Low)
  668. 00269 0269
  669. 00269 0269 80                                     dc.b    $80            ;Median Brightness
  670. 0026A 026A 80                                     dc.b    $80            ;Median Threshold
  671. 0026B 026B 80                                     dc.b    $80            ;Median Contrast
  672. 0026C 026C
  673. 0026C 026C 01                                     dc.b    $01            ;Image Composition (Halftone)
  674. 0026D 026D 01                                     dc.b    $01            ;Bits per Pixel
  675. 0026E 026E
  676. 0026E 026E 00                                     dc.b    $00            ;Halftone Mask Always $00 (High)
  677. 0026F 026F 02                                     dc.b    $02            ;Downloaded Mask Pattern (Low)
  678. 00270 0270
  679. 00270 0270 03                                     dc.b    $03            ;Padding Type
  680. 00271 0271 0000                                   dcb.b    2,$00        ;Reserved
  681. 00273 0273 00                                     dc.b    $00            ;Compression Type (None)
  682. 00274 0274 000000000000                           dcb.b    7,$00        ;Scanner Ref. is wrong.  Says 5.
  683. 0027B 027B
  684. 0027B 027B                            ;*******************************************************
  685. 0027B 027B                            ;
  686. 0027B 027B                            ;    CODE SAMPLE #5
  687. 0027B 027B                            ;
  688. 0027B 027B                            ;    This code segment issues an Apple Scanner SCAN
  689. 0027B 027B                            ;    Command by using the Apple SCSI Card Generic SCSI
  690. 0027B 027B                            ;    call ($2B).  This starts the actual scanning.
  691. 0027B 027B                            ;
  692. 0027B 027B                            ;*******************************************************
  693. 0027B 027B
  694. 0027B 027B                            start_scan
  695. 0027B 027B                                                            ;
  696. 0027B 027B                                                            ; Issue the Call
  697. 0027B 027B                                                            ;
  698. 0027B 027B AD 016F       0016F 4                  lda        scan_dnum
  699. 0027E 027E 8D FFFF       00289 4                  sta        dev_num5
  700. 00281 0281
  701. 00281 0281 20 00B0       000B0 6                  jsr        call_card
  702. 00284 0284 04                                     dc.b    $04            ;Control Call Command Number
  703. 00285 0285 0288                                   dc.w    cmd_list5
  704. 00287 0287 60                  6                  rts
  705. 00288 0288
  706. 00288 0288                            ;*******************************************************
  707. 00288 0288
  708. 00288 0288 03                         cmd_list5    dc.b    $03            ;PCount = 3
  709. 00289 0289 00                         dev_num5    dc.b    $00            ;Device number
  710. 0028A 028A 028D                                   dc.w    scan_cmd    ;Pointer to data
  711. 0028C 028C 2B                                     dc.b    $2B            ;Control Code
  712. 0028D 028D
  713. 0028D 028D                            ;*******************************************************
  714. 0028D 028D
  715. 0028D 028D                            scan_cmd                        ;Our Data
  716. 0028D 028D 0018                                   dc.w    24            ;Total Length of Parms
  717.  
  718. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  11
  719. Copyright Apple Computer, Inc. 1987-1990
  720.  
  721. Loc   SLoc Object Code    Addr T M    Source Statement
  722.  
  723. 0028F 028F 000002A7                               dc.l    do_scan        ;CDB Pointer (Long)
  724. 00293 0293 000002AD                               dc.l    DCData5        ;DCMove Ptr (Long)
  725. 00297 0297 00000000                               dc.l    $00000000    ;Rqst Sense Ptr (Long)
  726. 0029B 029B 00                                     dc.b    $00            ;Reserved
  727. 0029C 029C 00                                     dc.b    $00            ;SCSI Status
  728. 0029D 029D 00                                     dc.b    $00            ;Command Count
  729. 0029E 029E 00000001                               dc.l    $00000001    ;Trans Count (Long)
  730. 002A2 02A2 00                                     dc.b    $00            ;DMA Mode
  731. 002A3 02A3 00000000                               dc.l    $00000000    ;Reserved (Long)
  732. 002A7 02A7
  733. 002A7 02A7                            ;*******************************************************
  734. 002A7 02A7
  735. 002A7 02A7 1B                         do_scan        dc.b    $1B            ;SCAN
  736. 002A8 02A8                                                            ;Parameters Command
  737. 002A8 02A8 000000                                 dcb.b    3,$00        ;Reserved
  738. 002AB 02AB 01                                     dc.b    1            ;Transfer Length (Low)
  739. 002AC 02AC 00                                     dc.b    $00            ;Wait and Home Bits = 0
  740. 002AD 02AD
  741. 002AD 02AD                            ;*******************************************************
  742. 002AD 02AD
  743. 002AD 02AD 000002CD                   DCData5        dc.l    window_ID    ;Scanner Window Data Ptr
  744. 002B1 02B1 00000001                               dc.l    1            ;Transfer Count
  745. 002B5 02B5 00000000                               dc.l    $00000000    ;Offset
  746. 002B9 02B9 00000000                               dc.l    $00000000    ;Reserved
  747. 002BD 02BD
  748. 002BD 02BD 00000000                               dc.l    $00000000    ;DCStop
  749. 002C1 02C1 00000000                               dc.l    $00000000    ;Reserved
  750. 002C5 02C5 00000000                               dc.l    $00000000    ;Reserved
  751. 002C9 02C9 00000000                               dc.l    $00000000    ;Reserved
  752. 002CD 02CD
  753. 002CD 02CD                            ;*******************************************************
  754. 002CD 02CD
  755. 002CD 02CD 01                         window_ID    dc.b    $01            ;Window Identifier
  756. 002CE 02CE
  757. 002CE 02CE                            ;*******************************************************
  758. 002CE 02CE                            ;
  759. 002CE 02CE                            ;    CODE SAMPLE #6
  760. 002CE 02CE                            ;
  761. 002CE 02CE                            ;    This code segment issues a series of calls to the
  762. 002CE 02CE                            ;    Apple Scanner by using the Apple SCSI Card Generic
  763. 002CE 02CE                            ;    SCSI call ($2B).  We first issue a GET DATA STATUS
  764. 002CE 02CE                            ;    to see if there is enough data.  Then we read in a
  765. 002CE 02CE                            ;    single Scan Line with a READ Call.  The data is then
  766. 002CE 02CE                            ;    converted and placed in a video buffer.
  767. 002CE 02CE                            ;
  768. 002CE 02CE                            ;*******************************************************
  769. 002CE 02CE
  770. 002CE 02CE                            get_data
  771. 002CE 02CE 9C FFFF       00338 4                  stz        scan_line    ;Init the scanline to 0
  772. 002D1 02D1                                                            ;
  773. 002D1 02D1                                                            ; Issue the Call
  774. 002D1 02D1                                                            ;
  775. 002D1 02D1 AD 016F       0016F 4      @get_data2    lda        scan_dnum
  776. 002D4 02D4 8D FFFF       00365 4                  sta        dev_num6
  777. 002D7 02D7 8D FFFF       0036A 4                  sta        dev_num65
  778. 002DA 02DA
  779. 002DA 02DA 20 00B0       000B0 6                  jsr        call_card
  780. 002DD 02DD 04                                     dc.b    $04            ;Control Call Command Number
  781. 002DE 02DE 0364                                   dc.w    cmd_list6
  782. 002E0 02E0 B0 52         00334 2                  bcs        @out
  783. 002E2 02E2                                                            ;
  784. 002E2 02E2                                                            ; Is there enough Data?
  785. 002E2 02E2                                                            ; Enough data = 1 scan
  786. 002E2 02E2                                                            ; line of 4 inches at 75
  787. 002E2 02E2                                                            ; DPI or 300 pixels.  At
  788. 002E2 02E2                                                            ; 8 pixels per byte, the
  789. 002E2 02E2                                                            ; data will be padded to
  790. 002E2 02E2                                                            ; 38 bytes.
  791. 002E2 02E2                                                            ;
  792.  
  793. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  12
  794. Copyright Apple Computer, Inc. 1987-1990
  795.  
  796. Loc   SLoc Object Code    Addr T M    Source Statement
  797.  
  798. 002E2 02E2 AD FFFF       003FF 4                  lda        scan_data
  799. 002E5 02E5 D0 0C         002F3 2                  bne        @have_line
  800. 002E7 02E7 AD FFFF       00400 4                  lda        scan_data+1
  801. 002EA 02EA D0 07         002F3 2                  bne        @have_line
  802. 002EC 02EC AD FFFF       00401 4                  lda        scan_data+2
  803. 002EF 02EF C9 26               2                  cmp        #38            ;Decimal 38
  804. 002F1 02F1 90 DB         002CE 2                  blt        get_data
  805. 002F3 02F3                                                            ;
  806. 002F3 02F3                                                            ; We have the data.  Read
  807. 002F3 02F3                                                            ; it.
  808. 002F3 02F3                                                            ;
  809. 002F3 02F3 20 00B0       000B0 6      @have_line    jsr        call_card
  810. 002F6 02F6 04                                     dc.b    $04            ;Control Call Command Number
  811. 002F7 02F7 0369                                   dc.w    cmd_list65
  812. 002F9 02F9 B0 39         00334 2                  bcs        @out
  813. 002FB 02FB                                                            ;
  814. 002FB 02FB                                                            ; Now we need to invert
  815. 002FB 02FB                                                            ; the data.
  816. 002FB 02FB                                                            ;
  817. 002FB 02FB A9 28               2                  lda        #40            ;40 bytes/line
  818. 002FD 02FD 8D FFFF       00339 4                  sta        byte_count
  819. 00300 0300 9C FFFF       0033A 4                  stz        byte_index
  820. 00303 0303 A9 07               2      @loop_1        lda        #$07
  821. 00305 0305 8D FFFF       0033B 4                  sta        seven        ;Pixels/byte
  822. 00308 0308 A2 24               2      @loop_2        ldx        #38-2
  823. 0030A 030A 0E FFFF       00427 6                  asl        raw_image+37;Shift bits out the top to
  824. 0030D 030D 3E FFFF             7      @loop_3        rol        raw_image,x    ;the next byte 1 at a time
  825. 00310 0310 CA                  2                  dex
  826. 00311 0311 10 FA         0030D 2                  bpl        @loop_3
  827. 00313 0313 AE FFFF       0033A 4                  ldx        byte_index    ;Shift the last bit in to
  828. 00316 0316 7E FFFF             7                  ror        screen,x    ;this byte.  This reverses the
  829. 00319 0319 CE FFFF       0033B 6                  dec        seven        ;bit ordering. Also taking 8
  830. 0031C 031C D0 EA         00308 2                  bne        @loop_2        ;bits per byte down to 7
  831. 0031E 031E 5E FFFF             7                  lsr        screen,x
  832. 00321 0321 EE FFFF       0033A 6                  inc        byte_index
  833. 00324 0324 CE FFFF       00339 6                  dec        byte_count
  834. 00327 0327 D0 DA         00303 2                  bne        @loop_1
  835. 00329 0329                                                            ;
  836. 00329 0329                                                            ; Move data to Scan Line
  837. 00329 0329                                                            ;
  838. 00329 0329 AE FFFF       00338 4                  ldx        scan_line
  839. 0032C 032C 20 FFFF       00428 6                  jsr        on_screen
  840. 0032F 032F EE FFFF       00338 6                  inc        scan_line
  841. 00332 0332 80 9D         002D1 3                  bra        @get_data2
  842. 00334 0334
  843. 00334 0334 A9 00               2      @out        lda        #$00
  844. 00336 0336 18                  2                  clc
  845. 00337 0337 60                  6                  rts
  846. 00338 0338
  847. 00338 0338                            ;*******************************************************
  848. 00338 0338
  849. 00338 0338 00                         scan_line    dc.b    $00            ;Scan Line Index
  850. 00339 0339 00                         byte_count    dc.b    $00            ;Number of bytes left
  851. 0033A 033A 00                         byte_index    dc.b    $00            ;Current Byte in use
  852. 0033B 033B 00                         seven        dc.b    $00            ;Count off 7 pixels
  853. 0033C 033C 000000000000               screen        dcb.b    40,0        ;Place to do the screen
  854. 00364 0364
  855. 00364 0364                            ;*******************************************************
  856. 00364 0364
  857. 00364 0364 03                         cmd_list6    dc.b    $03            ;PCount = 3
  858. 00365 0365 00                         dev_num6    dc.b    $00            ;Device number
  859. 00366 0366 036E                                   dc.w    gd_status    ;Pointer to data
  860. 00368 0368 2B                                     dc.b    $2B            ;Control Code
  861. 00369 0369
  862. 00369 0369 03                         cmd_list65    dc.b    $03            ;PCount = 3
  863. 0036A 036A 00                         dev_num65    dc.b    $00            ;Device number
  864. 0036B 036B 0388                                   dc.w    read        ;Pointer to data
  865. 0036D 036D 2B                                     dc.b    $2B            ;Control Code
  866. 0036E 036E
  867.  
  868. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  13
  869. Copyright Apple Computer, Inc. 1987-1990
  870.  
  871. Loc   SLoc Object Code    Addr T M    Source Statement
  872.  
  873. 0036E 036E                            ;*******************************************************
  874. 0036E 036E
  875. 0036E 036E                            gd_status                        ;Our Data
  876. 0036E 036E 0018                                   dc.w    24            ;Total Length of Parms
  877. 00370 0370 000003A2                               dc.l    get_stat    ;CDB Pointer (Long)
  878. 00374 0374 000003B6                               dc.l    DCData6        ;DCMove Ptr (Long)
  879. 00378 0378 00000000                               dc.l    $00000000    ;Rqst Sense Ptr (Long)
  880. 0037C 037C 00                                     dc.b    $00            ;Reserved
  881. 0037D 037D 00                                     dc.b    $00            ;SCSI Status
  882. 0037E 037E 00                                     dc.b    $00            ;Command Count
  883. 0037F 037F 0000000C                               dc.l    $0000000C    ;Trans Count (Long)
  884. 00383 0383 00                                     dc.b    $00            ;DMA Mode
  885. 00384 0384 00000000                               dc.l    $00000000    ;Reserved (Long)
  886. 00388 0388
  887. 00388 0388                            read                            ;Our Data
  888. 00388 0388 0018                                   dc.w    24            ;Total Length of Parms
  889. 0038A 038A 000003AC                               dc.l    get_data2    ;CDB Pointer (Long)
  890. 0038E 038E 000003D6                               dc.l    DCData65    ;DCMove Ptr (Long)
  891. 00392 0392 00000000                               dc.l    $00000000    ;Rqst Sense Ptr (Long)
  892. 00396 0396 00                                     dc.b    $00            ;Reserved
  893. 00397 0397 00                                     dc.b    $00            ;SCSI Status
  894. 00398 0398 00                                     dc.b    $00            ;Command Count
  895. 00399 0399 00000026                               dc.l    $00000026    ;Trans Count (Long)
  896. 0039D 039D 00                                     dc.b    $00            ;DMA Mode
  897. 0039E 039E 00000000                               dc.l    $00000000    ;Reserved (Long)
  898. 003A2 03A2
  899. 003A2 03A2                            ;*******************************************************
  900. 003A2 03A2
  901. 003A2 03A2 34                         get_stat    dc.b    $34            ;GET DATA STATUS
  902. 003A3 03A3                                                            ;Parameters Command
  903. 003A3 03A3 000000000000                           dcb.b    7,$00        ;Reserved
  904. 003AA 03AA 0C                                     dc.b    12            ;Transfer Length (Low)
  905. 003AB 03AB 00                                     dc.b    $00            ;Wait and Home Bits = 0
  906. 003AC 03AC
  907. 003AC 03AC 28                         get_data2    dc.b    $28            ;READ
  908. 003AD 03AD                                                            ;Parameters Command
  909. 003AD 03AD 00000000                               dcb.b    4,$00        ;Reserved
  910. 003B1 03B1 01                                     dc.b    $01            ;Window ID
  911. 003B2 03B2 00                                     dc.b    $00            ;Transfer Length (High)
  912. 003B3 03B3 00                                     dc.b    $00            ;Transfer Length (Mid)
  913. 003B4 03B4 26                                     dc.b    $26            ;Transfer Length (Low)
  914. 003B5 03B5 00                                     dc.b    $00            ;Wait and Home Bits = 0
  915. 003B6 03B6
  916. 003B6 03B6                            ;*******************************************************
  917. 003B6 03B6
  918. 003B6 03B6 000003F6                   DCData6        dc.l    data_cnt    ;Data Pointer
  919. 003BA 03BA 0000000C                               dc.l    12            ;Transfer Count
  920. 003BE 03BE 00000000                               dc.l    $00000000    ;Offset
  921. 003C2 03C2 00000000                               dc.l    $00000000    ;Reserved
  922. 003C6 03C6
  923. 003C6 03C6 00000000                               dc.l    $00000000    ;DCStop
  924. 003CA 03CA 00000000                               dc.l    $00000000    ;Reserved
  925. 003CE 03CE 00000000                               dc.l    $00000000    ;Reserved
  926. 003D2 03D2 00000000                               dc.l    $00000000    ;Reserved
  927. 003D6 03D6
  928. 003D6 03D6 00000402                   DCData65    dc.l    raw_image    ;Data Pointer
  929. 003DA 03DA 00000026                               dc.l    38            ;Transfer Count
  930. 003DE 03DE 00000000                               dc.l    $00000000    ;Offset
  931. 003E2 03E2 00000000                               dc.l    $00000000    ;Reserved
  932. 003E6 03E6
  933. 003E6 03E6 00000000                               dc.l    $00000000    ;DCStop
  934. 003EA 03EA 00000000                               dc.l    $00000000    ;Reserved
  935. 003EE 03EE 00000000                               dc.l    $00000000    ;Reserved
  936. 003F2 03F2 00000000                               dc.l    $00000000    ;Reserved
  937. 003F6 03F6
  938. 003F6 03F6                            ;*******************************************************
  939. 003F6 03F6
  940. 003F6 03F6                            data_cnt                        ;Data Space
  941. 003F6 03F6 0000                                   dcb.b    2,$00        ;Reserved
  942.  
  943. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  14
  944. Copyright Apple Computer, Inc. 1987-1990
  945.  
  946. Loc   SLoc Object Code    Addr T M    Source Statement
  947.  
  948. 003F8 03F8 00                                     dc.b    $00            ;Data Length
  949. 003F9 03F9 00                                     dc.b    $00            ;Block
  950. 003FA 03FA 00                                     dc.b    $00            ;Window Identifier
  951. 003FB 03FB 00000000                               dcb.b    4,$00        ;Reserved
  952. 003FF 03FF 00                         scan_data    dc.b    $00            ;Scan Data (High)
  953. 00400 0400 00                                     dc.b    $00            ;Scan Data (Mid)
  954. 00401 0401 00                                     dc.b    $00            ;Scan Data (Low)
  955. 00402 0402
  956. 00402 0402 000000000000               raw_image    dcb.b    38,$00        ;Scanned Data Image
  957. 00428 0428
  958. 00428 0428                            ;*******************************************************
  959. 00428 0428
  960. 00428 0428 BD FFFF             4      on_screen    lda        scan_tbl_lo,x
  961. 0042B 042B 85 42               3                  sta        <$42
  962. 0042D 042D BD FFFF             4                  lda        scan_tbl_hi,x
  963. 00430 0430 85 43               3                  sta        <$43
  964. 00432 0432 A2 27               2                  ldx        #40-1
  965. 00434 0434 A0 27               2                  ldy        #40-1
  966. 00436 0436 BD 033C             4      @loop        lda        screen,x
  967. 00439 0439 49 7F               2                  eor        #$7f
  968. 0043B 043B 91 42               6                  sta        ($42),y
  969. 0043D 043D CA                  2                  dex
  970. 0043E 043E 88                  2                  dey
  971. 0043F 043F 10 F5         00436 2                  bpl        @loop
  972. 00441 0441
  973. 00441 0441 18                  2                  clc
  974. 00442 0442 60                  6                  rts
  975. 00443 0443
  976. 00443 0443 000000000000               scan_tbl_lo    dcb.b    8,$00        ;Lines 0-7
  977. 0044B 044B 808080808080                           dcb.b    8,$80        ;Lines 8-15
  978. 00453 0453 000000000000                           dcb.b    8,$00        ;Lines 16-23
  979. 0045B 045B 808080808080                           dcb.b    8,$80        ;Lines 24-31
  980. 00463 0463 000000000000                           dcb.b    8,$00        ;Lines 32-39
  981. 0046B 046B 808080808080                           dcb.b    8,$80        ;Lines 40-47
  982. 00473 0473 000000000000                           dcb.b    8,$00        ;Lines 48-55
  983. 0047B 047B 808080808080                           dcb.b    8,$80        ;Lines 56-63
  984. 00483 0483
  985. 00483 0483 282828282828                           dcb.b    8,$28        ;Lines 64-71
  986. 0048B 048B A8A8A8A8A8A8                           dcb.b    8,$a8        ;Lines 72-79
  987. 00493 0493 282828282828                           dcb.b    8,$28        ;Lines 80-87
  988. 0049B 049B A8A8A8A8A8A8                           dcb.b    8,$a8        ;Lines 88-95
  989. 004A3 04A3 282828282828                           dcb.b    8,$28        ;Lines 96-103
  990. 004AB 04AB A8A8A8A8A8A8                           dcb.b    8,$a8        ;Lines 104-111
  991. 004B3 04B3 282828282828                           dcb.b    8,$28        ;Lines 112-119
  992. 004BB 04BB A8A8A8A8A8A8                           dcb.b    8,$a8        ;Lines 120-127
  993. 004C3 04C3
  994. 004C3 04C3 505050505050                           dcb.b    8,$50        ;Lines 128-135
  995. 004CB 04CB D0D0D0D0D0D0                           dcb.b    8,$d0        ;Lines 136-143
  996. 004D3 04D3 505050505050                           dcb.b    8,$50        ;Lines 144-151
  997. 004DB 04DB D0D0D0D0D0D0                           dcb.b    8,$d0        ;Lines 152-159
  998. 004E3 04E3 505050505050                           dcb.b    8,$50        ;Lines 160-167
  999. 004EB 04EB D0D0D0D0D0D0                           dcb.b    8,$d0        ;Lines 168-175
  1000. 004F3 04F3 505050505050                           dcb.b    8,$50        ;Lines 176-183
  1001. 004FB 04FB D0D0D0D0D0D0                           dcb.b    8,$d0        ;Lines 184-191
  1002. 00503 0503
  1003. 00503 0503 2024282C3034               scan_tbl_hi    dc.b    $20,$24,$28,$2c,$30,$34,$38,$3c
  1004. 0050B 050B 2024282C3034                           dc.b    $20,$24,$28,$2c,$30,$34,$38,$3c
  1005. 00513 0513 2125292D3135                           dc.b    $21,$25,$29,$2d,$31,$35,$39,$3d
  1006. 0051B 051B 2125292D3135                           dc.b    $21,$25,$29,$2d,$31,$35,$39,$3d
  1007. 00523 0523 22262A2E3236                           dc.b    $22,$26,$2a,$2e,$32,$36,$3a,$3e
  1008. 0052B 052B 22262A2E3236                           dc.b    $22,$26,$2a,$2e,$32,$36,$3a,$3e
  1009. 00533 0533 23272B2F3337                           dc.b    $23,$27,$2b,$2f,$33,$37,$3b,$3f
  1010. 0053B 053B 23272B2F3337                           dc.b    $23,$27,$2b,$2f,$33,$37,$3b,$3f
  1011. 00543 0543
  1012. 00543 0543 2024282C3034                           dc.b    $20,$24,$28,$2c,$30,$34,$38,$3c
  1013. 0054B 054B 2024282C3034                           dc.b    $20,$24,$28,$2c,$30,$34,$38,$3c
  1014. 00553 0553 2125292D3135                           dc.b    $21,$25,$29,$2d,$31,$35,$39,$3d
  1015. 0055B 055B 2125292D3135                           dc.b    $21,$25,$29,$2d,$31,$35,$39,$3d
  1016. 00563 0563 22262A2E3236                           dc.b    $22,$26,$2a,$2e,$32,$36,$3a,$3e
  1017.  
  1018. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  15
  1019. Copyright Apple Computer, Inc. 1987-1990
  1020.  
  1021. Loc   SLoc Object Code    Addr T M    Source Statement
  1022.  
  1023. 0056B 056B 22262A2E3236                           dc.b    $22,$26,$2a,$2e,$32,$36,$3a,$3e
  1024. 00573 0573 23272B2F3337                           dc.b    $23,$27,$2b,$2f,$33,$37,$3b,$3f
  1025. 0057B 057B 23272B2F3337                           dc.b    $23,$27,$2b,$2f,$33,$37,$3b,$3f
  1026. 00583 0583
  1027. 00583 0583 2024282C3034                           dc.b    $20,$24,$28,$2c,$30,$34,$38,$3c
  1028. 0058B 058B 2024282C3034                           dc.b    $20,$24,$28,$2c,$30,$34,$38,$3c
  1029. 00593 0593 2125292D3135                           dc.b    $21,$25,$29,$2d,$31,$35,$39,$3d
  1030. 0059B 059B 2125292D3135                           dc.b    $21,$25,$29,$2d,$31,$35,$39,$3d
  1031. 005A3 05A3 22262A2E3236                           dc.b    $22,$26,$2a,$2e,$32,$36,$3a,$3e
  1032. 005AB 05AB 22262A2E3236                           dc.b    $22,$26,$2a,$2e,$32,$36,$3a,$3e
  1033. 005B3 05B3 23272B2F3337                           dc.b    $23,$27,$2b,$2f,$33,$37,$3b,$3f
  1034. 005BB 05BB 23272B2F3337                           dc.b    $23,$27,$2b,$2f,$33,$37,$3b,$3f
  1035. 005C3 05C3
  1036. 005C3 05C3                            ;*******************************************************
  1037. 005C3 05C3                            ;
  1038. 005C3 05C3                            ;    CODE SAMPLE #7
  1039. 005C3 05C3                            ;
  1040. 005C3 05C3                            ;    This code segment toggles the HiRes Soft switches so
  1041. 005C3 05C3                            ;    that we can see what was just scanned.
  1042. 005C3 05C3                            ;
  1043. 005C3 05C3                            ;*******************************************************
  1044. 005C3 05C3
  1045. 005C3 05C3                            display
  1046. 005C3 05C3                                                            ;
  1047. 005C3 05C3                                                            ; Save the Current State
  1048. 005C3 05C3                                                            ;
  1049. 005C3 05C3 AD C01A             4                  lda        RDTEXT
  1050. 005C6 05C6 8D FFFF       00630 4                  sta        @text        ;Text/Graphics
  1051. 005C9 05C9
  1052. 005C9 05C9 AD C01B             4                  lda        RDMIX
  1053. 005CC 05CC 8D FFFF       00631 4                  sta        @mixed        ;Mixed?
  1054. 005CF 05CF
  1055. 005CF 05CF AD C01C             4                  lda        RDPAGE2
  1056. 005D2 05D2 8D FFFF       00632 4                  sta        @page        ;Page 1 or 2
  1057. 005D5 05D5
  1058. 005D5 05D5 AD C01D             4                  lda        RDHIRES
  1059. 005D8 05D8 8D FFFF       00633 4                  sta        @hires        ;HiRes Mode?
  1060. 005DB 05DB
  1061. 005DB 05DB AD C018             4                  lda        RD80COL
  1062. 005DE 05DE 8D FFFF       00634 4                  sta        @80col        ;80-Column Mode?
  1063. 005E1 05E1
  1064. 005E1 05E1 AD C00C             4                  lda        CLR80VID    ;40-Column Mode.
  1065. 005E4 05E4 AD C050             4                  lda        TXTCLR        ;Standard Apple II Graphics
  1066. 005E7 05E7 AD C052             4                  lda        MIXCLR        ;Clear Mixed Mode
  1067. 005EA 05EA AD C054             4                  lda        TXTPAGE1    ;Page 1
  1068. 005ED 05ED AD C057             4                  lda        HIRES        ;HiRes Mode
  1069. 005F0 05F0 AD C05E             4                  lda        CLRAN3        ;Clear annunciator 3
  1070. 005F3 05F3
  1071. 005F3 05F3
  1072. 005F3 05F3 8D C010             4                  sta        KBD_STRB    ;Clear Key Strobe
  1073. 005F6 05F6 AD C000             4      @key_loop    lda        KBD            ;Get key
  1074. 005F9 05F9 10 FB         005F6 2                  bpl        @key_loop    ;Wait for Key Press
  1075. 005FB 05FB 8D C010             4                  sta        KBD_STRB    ;Clear Key Strobe
  1076. 005FE 05FE C9 9B               2                  cmp        #ESC        ;ESC Key
  1077. 00600 0600 18                  2                  clc
  1078. 00601 0601 D0 04         00607 2                  bne        @chk_txt
  1079. 00603 0603 38                  2                  sec                    ;Exit on ESC
  1080. 00604 0604
  1081. 00604 0604 AD C05F             4                  lda        SETAN3        ;Set annunciator 3
  1082. 00607 0607
  1083. 00607 0607 AD FFFF       00630 4      @chk_txt    lda        @text
  1084. 0060A 060A 10 03         0060F 2                  bpl        @chk_mix
  1085. 0060C 060C 8D C051             4                  sta        TXTSET        ;Text on
  1086. 0060F 060F
  1087. 0060F 060F AD FFFF       00631 4      @chk_mix    lda        @mixed
  1088. 00612 0612 10 03         00617 2                  bpl        @chk_page
  1089. 00614 0614 8D C053             4                  sta        MIXSET        ;Mixed on
  1090. 00617 0617
  1091. 00617 0617 AD FFFF       00632 4      @chk_page    lda        @page
  1092.  
  1093. MPW IIGS Assembler - Ver 1.1b1                                                                             06-Nov-90  Page  16
  1094. Copyright Apple Computer, Inc. 1987-1990
  1095.  
  1096. Loc   SLoc Object Code    Addr T M    Source Statement
  1097.  
  1098. 0061A 061A 10 03         0061F 2                  bpl        @chk_hires
  1099. 0061C 061C 8D C055             4                  sta        TXTPAGE2    ;Page 2
  1100. 0061F 061F
  1101. 0061F 061F AD FFFF       00633 4      @chk_hires    lda        @hires
  1102. 00622 0622 10 03         00627 2                  bpl        @chk_40col
  1103. 00624 0624 8D C056             4                  sta        LORES        ;HiRes Off
  1104. 00627 0627
  1105. 00627 0627 AD FFFF       00634 4      @chk_40col    lda        @80col
  1106. 0062A 062A 10 03         0062F 2                  bpl        @rts
  1107. 0062C 062C 8D C00D             4                  sta        SET80VID    ;80-Column on.
  1108. 0062F 062F
  1109. 0062F 062F 60                  6      @rts        rts
  1110. 00630 0630
  1111. 00630 0630 00                         @text        dc.b    $00
  1112. 00631 0631 00                         @mixed        dc.b    $00
  1113. 00632 0632 00                         @page        dc.b    $00
  1114. 00633 0633 00                         @hires        dc.b    $00
  1115. 00634 0634 00                         @80col        dc.b    $00
  1116. 00635 0635
  1117. 00635 0635                            ;*******************************************************
  1118. 00635 0635
  1119. 00635 0635                                        ENDP
  1120.  
  1121.                                                   END
  1122.  
  1123. Elapsed time: 4.05 seconds.
  1124.  
  1125. Assembly complete - no errors found.  1026 lines.
  1126.